package Time;

import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Set;

public class Time8 {
    //JDK8后的时间类
    //（多线程环境下）安全 简单
    //时间日期都是不变的 创建一个新的对象
    public static void main(String[] args) {
        //Date类
//        ZoneId时区
        //获取所有时区
//        Set<String> zoneIds = ZoneId.getAvailableZoneIds();
//        System.out.println(zoneIds);//Asia/Shanghai
//
//        //获取当前系统的默认时区
//        ZoneId zoneId=ZoneId.systemDefault();
//        System.out.println(zoneId);
//
//        ZoneId zoneId1 = ZoneId.of("America/Cuiaba");
//        System.out.println(zoneId1);//America/Cuiaba

        //Instant
        //标准时间
//        Instant now=Instant.now();
//        System.out.println(now);
//
//        //根据秒 毫秒 纳秒获取Instance对象
//        //ms
//        Instant instant1=Instant.ofEpochMilli(0L);
//        System.out.println(instant1);
//
//        //s
//        Instant instant2 = Instant.ofEpochSecond(1L);
//        System.out.println(instant2);
//
//        //s+ns
//        Instant instant3 = Instant.ofEpochSecond(1L, 1000000000);
//        System.out.println(instant3);
//
        //指定时区
//        ZonedDateTime zonedDateTime = Instant.now().atZone(ZoneId.of("Asia/Shanghai"));
//        System.out.println(zonedDateTime);

        //isXXX 判断  调用者表示的时间是否在参数表示时间前/后
//        Instant instant = Instant.ofEpochMilli(0L);
//        Instant instant1 = Instant.ofEpochMilli(1000L);
//
//        boolean result=instant1.isAfter(instant);
//        System.out.println(result);
//
//        result=instant1.isBefore(instant);
//        System.out.println(result);

//        Instant instant = Instant.ofEpochMilli(3000L);
//        System.out.println(instant);
//
//        Instant instant1 = instant.minusSeconds(1);
//        System.out.println(instant1);
//
//        Instant instant2 = instant.plusSeconds(1);
//        System.out.println(instant2);

        //ZoneDateTime 带时区的时间
//        ZonedDateTime now = ZonedDateTime.now();
//        System.out.println(now);
//
//        //获取指定的时间对象
//        ZonedDateTime time1=ZonedDateTime.of(2023,10,1,11,12,12,0,
//                ZoneId.of("Asia/Shanghai"));
//        System.out.println(time1);
//
//        //通过Instance +时区获取时间对象
//        Instant instant = Instant.ofEpochMilli(0L);
//        ZoneId zoneId=ZoneId.of("Asia/Shanghai");
//        ZonedDateTime time2=ZonedDateTime.ofInstant(instant,zoneId);
//        System.out.println(time2);
//
//        //withXXX 修改时间
//        ZonedDateTime time3=time2.withYear(2000);
//        System.out.println(time3);
//
//        //减少时间
//        ZonedDateTime time4=time2.minusYears(1);
//        System.out.println(time4);
//
//        //增加
//        ZonedDateTime time5 =time2.plusYears(1);
//        System.out.println(time5);
//
//        //JDK8新增的事件对象都是不可变的 意思就是改变的都是新创建的对象 而不是原来的对象



        //DateTimeFormatter
        //ofPattern()  获取格式对象
//        ZonedDateTime time=Instant.now().atZone(ZoneId.of("Asia/Shanghai"));
//
//        //解析/格式化器
//        DateTimeFormatter dtf1=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EE a");
//
//        System.out.println(dtf1.format(time));
    }
}
